feat(action): add dry-run input + make action-smoke side-effect-free#16
Merged
Conversation
Wires --dry-run through the composite action and switches the action-smoke job to use it. Drops contents: write so the smoke test cannot push real tags even under regression. Bumps version floor in action.yml from >=0.3.1 to >=0.5.0 to require the semvertag release that ships --dry-run. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
5-task plan: URL fixes, action.yml input + version floor, ci.yml action-smoke uses dry-run + drops contents: write, docs/providers/ github.md "Preview the next bump" section, verify + PR. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…-run Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This was referenced Jun 9, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
dry-runboolean input toaction.yml(default'false'). When true, the composite passes--dry-runtosemvertag tag; semvertag skipsprovider.create_tagand emitsstatus="dry_run", which the existing case block normalizes to publicstatus="no-bump".ci.yml'saction-smokejob to usedry-run: 'true'and dropspermissions: contents: write. The job can no longer push real tags even under regression — GitHub would 403 first.status == no-bump. Under dry-run this is guaranteed true; if action.yml's dry-run wiring breaks, status becomescreatedand the assertion fails loudly.action.ymlfrom>=0.3.1,<1to>=0.5.0,<1(the release that ships--dry-run).## Preview the next bumpsection indocs/providers/github.md.modern-python.orgsubdomain (a leftover from PR ci: deploy mkdocs via GitHub Actions #14).Spec:
planning/specs/2026-06-09-action-yml-dry-run-design.md. Predecessor: PR #15 (semvertag CLI--dry-runflag; shipped as0.5.0).Motivation
PR #14 surfaced the underlying smell:
action-smokeran withcontents: writeagainst main HEAD via the GitHub API, so whenever main HEAD was an untaggedfeat//bugfix/merge, the smoke test minted and pushed a real release tag from a PR's CI run. PR A landed the CLI half (semvertag tag --dry-run); this PR wires it through the composite action and switchesaction-smoketo use it. After merge,action-smokeis structurally side-effect-free.Test plan
just lint-cipassesjust testpasses (428 tests, 100% coverage — no Python source changed)mkdocs build --strictpassesaction-smokejob passes — confirms end-to-end wiring of the newdry-runinputaction-smokeon the NEXT PR (whatever it is) still passes — verifies the contract holds across consecutive PRs🤖 Generated with Claude Code